Import('env', 'arch', 'SHARED', 'QCOM_REPLAY')

if SHARED:
  fxn = env.SharedLibrary
else:
  fxn = env.Library

common_libs = ['params.cc', 'swaglog.cc', 'util.c', 'cqueue.c', 'gpio.cc', 'i2c.cc']

_common = fxn('common', common_libs, LIBS="json11")
_visionipc = fxn('visionipc', ['visionipc.c', 'ipc.c'])

files = [
  'buffering.c',
  'clutil.c',
  'efd.c',
  'glutil.c',
  'visionimg.cc',
]

if arch == "aarch64":
  defines = {}
  files += [
    'framebuffer.cc',
    'touch.c',
  ]
  if QCOM_REPLAY:
    files += ['visionbuf_cl.c']
  else:
    files += ['visionbuf_ion.c']
  _gpu_libs = ['gui', 'adreno_utils']
elif arch == "larch64":
  defines = {"CLU_NO_CACHE": None}
  files += [
    'visionbuf_ion.c',
  ]
  _gpu_libs = ['GL']
else:
  defines = {"CLU_NO_CACHE": None}
  files += [
    'visionbuf_cl.c',
  ]
  _gpu_libs = ["GL"]

_gpucommon = fxn('gpucommon', files, CPPDEFINES=defines, LIBS=_gpu_libs)
Export('_common', '_visionipc', '_gpucommon', '_gpu_libs')
